# Universo de discurso

Se requiere de un sistema que permita almacenar **artículos** de diferentes temáticas a estudiantes y personal docente de la Universidad de Guanajuato.

Este sistema le permitirá a las personas leer y buscar los **artículos** publicados por los **usuarios** registrados.

Los usuarios se registrarán en el sistema con su nombre completo, apodo, correo electrónico institucional, y podrán subir archivos escritos en markdown para publicar **artículos** que son aprobados por moderadores.

Para completar el registro de una cuenta, los usuarios deberán de verificar su email con un token de verificación que tiene tiempo de expiración, si el token está expirado e inician sesión o vuelven a registrarse con el mismo email o apodo, la cuenta será eliminada.

Cada usuario registrado tienen su propio **perfil**, en el cual pueden ver los **artículos** publicados, los **artículos** en espera de aprobación y **artículos** favoritos, además se muestra su avatar (inicialmente se asigna uno por defecto), un fondo (inicialmente se asigna uno por defecto), su apodo, su nombre completo y una descripción o autobiografía (inicialmente uno por defecto). Además los **perfiles** pueden editarse para cambiar cualquiera de los apartados mencionados, incluso eliminar **artículos** publicados o en espera de aprobación, a excepción de las ediciones de **artículos**, cada edición debe aprobarse.

Los **artículos** publicados y en espera de aprobación dentro de los **perfiles** de los **usuarios**, se visualizan en tarjetas con una portada (en una portada por defecto si está en espera de aprobación), el titulo, la sinopsis, el número de comentarios y favoritos, ordenados en fecha de publicación o edición.

Cada **artículo** contiene el título del **artículo**, el autor, la fecha de publicación, los **tags**, el cuerpo del **artículo**, una sección de **comentarios**, una sección para guardarlo en **favoritos** y otros **artículos** del mismo autor.

Los **usuarios** registrados solo pueden **comentar** y valorar como **favorito** todos los **artículos** registrados, los **comentarios** tienen una longitud limitada de caracteres y solo se pueden eliminar.

En la página principal del sistema cualquier **usuario** (registrado o no) visualizan los últimos **artículos** publicados y los **artículos** con mayor número de **favoritos**, pueden leer, buscar **artículos** y visualizar los **perfiles** de los **usuarios**, no visualizan sus **artículos favoritos** ni **artículos** en espera de aprobación.

Solo se pueden buscar **artículos** basados en el nombre, el autor o el **tag** del **artículo**.

Los resultados de búsqueda y los **artículos favoritos** se muestran en tarjetas que contienen la portada, el titulo, una sinopsis, el autor del **artículo**, el número de **comentarios** y **favoritos**.

El panel de administración los **moderadores** visualizan todos los **artículos** de los **usuarios** y todos los **artículos** enviados para su aprobación en lista, además tienen todos los **permisos** de un **usuario** ordinario.

Los **moderadores** pueden editar el contenido de todos los **artículos** de los **usuarios** escrito en markdown y para cada aprobación de **artículos** obligatoriamente deben contener una portada.

Un **rol** de súper usuario que puede eliminar cuentas de **usuarios**, agregar cuentas de moderadores y cuentas de súper usuario.

## Entidades explicitas

+ Artículos
+ Usuarios
+ Perfiles
+ Comentarios
+ Favoritos
+ Tags
+ Roles
+ Permisos
+ Autorizados

## Entidades implícitas

+ Histórico de autorización de artículos